vim命令速记

vim命令速记…

使用方法

三种模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑模式 ↔ 一般模式 ↔ 命令行模式
一般模式与另外两种可以相互切换,另外两种之间无法直接切换
一般模式→编辑模式:i I a A o O r R
i 光标在当前位置编辑
I 行首编辑
a 光标的下一个字符处编辑
A 行尾编辑
o 当前行的下一行开始编辑
O 上一行开始编辑
r 对当前字符进行替换
R 对光标处之后的本行字符替换
编辑模式→一般模式: [ESC]
一般模式→命令行模式: : / ?
命令行模式→一般模式: [ESC]

一般模式下光标移动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
j 向下一行
k 向上一行
h 向左一个字符
l 向右一个
3j 向下3行
20l 向右20个字符
20[space] 向右20个字符,与上

ctrl+f 向下一页
ctrl+b 向上一页

0或^或[end] 到本行第一个字符处
$或[home] 到本行最后一个字符

G 到最后一行
30G 到第30行
gg 到第一行
n[enter] 向下n行

一般模式下查找替换

1
2
3
4
5
6
7
/word 向下寻找名为word的单词
?word 向上寻找名为word的单词
n 重复前一个查找动作,向下查找
N 重复前一个查找动作,向上查找
:n1,n2s/word1/word2/g n1行与n2行之间查找word1,替换为word2
:1,$s/word1/word2/g 1到最后一行...
:1,$s/word1/word2/gc 提示用户对每一个替换进行确认

替换时的参数

1
2
3
4
5
6
7
8
9
在linux下的VIM中替换命令的格式是;[range]s/pattern/string/[c,e,g,i]
range:指的是范围
s(search):表示搜索
pattern:就是要被替换的字符串
string:将替换pattern
C:每次替换前询问
g(globe):不询问,将做整行替换
e(error):不显示error
i:(ignore)不分大小写

删除/剪切& 复制 & 粘贴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
x 向后删除一个字符
X 向前删除一个字符
3x 向后删除3个字符
dd 删除/剪切当前行
ndd 向下删除/剪切n行
dnG 删除/剪切光标所在行到第n行
d$ 删除/剪切光标到该行最后一个字符
d0 删除/剪切光标到该行第一个字符
yy 复制当前行
nyy 复制往下n行
ynG 复制光标所在行到第n行
... y的与d类似
p 粘贴到下一行
P 粘贴到上一行

撤销 & 还原撤销

1
2
u 撤销相当于windows下ctrl+z
ctrl+r 还原撤销 相当于ctrl+y

选中 & 复制 & 粘贴

1
2
3
4
5
6
7
8
9
v 进入visual模式,即文本选择模式
ctrl+v 进入块选择模式,可选中列数据
v+ j/k/h/l 进行文本选中
对于选中的文本进行如下按键:
d:剪切操作
y:复制操作
p:粘贴操作
^:选中当前行,光标位置到行首(或者使用键盘的HOME键)
$:选中当前行,光标位置到行尾(或者使用键盘的END键)

命令行模式

1
2
3
4
5
6
7
8
9
10
:w 写入硬盘≈ctrl+s,write的首字母
:q 退出
:q! 强制退出
:wq 保存并退出
: w[filename] 另存为名为filename的文件
:n1,n2 w [filename] n1行到n2行的内容另存为filename文件
:! command command代表想要执行的命令
:set nu 显示行号
:set nonu 取消显示行号
:

  • 一般小写是往后,对应大写是往前。
  • 活用数字,比如33j是光标向下移动33行。

多窗口功能

1
2
3
4
:sp [filename]  再打开一个窗口,显示filename文件内容。不加文件名,显示同一文件内容。
ctrl+w+j 切换到下一个窗口
ctrl+w+k 上一个窗口
ctrl+w+q 退出当前窗口

常用配置

1
2
3
vim /etc/vim/vimc 或者 vim ~/.vimrc (本文件默认不存在)
set set ts=4 #设置tab键为四个空格
set autoindent #自动缩排

其他问题

  • 复制时不要行号
    如果用鼠标复制,会连行号一块选上.
    在一般模式下按v进入visiual模式,选择要复制的行,然后输入 +y 就可以了.
  • 多行缩进

    1
    2
    3
    4
    a1,a2>
    a1,a2< #移动多个tab就加多个符号
    或者
    v进入视图模式,选中相应行,然后 >
  • 每行行首或行尾添加字符串

    1
    2
    3
    %s/^/xxxxx  #行首
    %s/$/xxxxx #行尾
    m,n s/$/xxx #第m到n行尾添加xxx
  • 正则表达式查找

    1
    2
    3
    4
    5
    magic (\m):除了$ . * ^ 之外其他元字符都要加反斜杠。
    nomagic (\M):除了 $ ^ 之外其他元字符都要加反斜杠。
    /\m.* # 查找任意字符串
    /\M.* # 查找字符串 .* (点号后面跟个星号)
    /\m999.*999 #查找999开始,999结尾的串
  • 处理kindle书摘时的命令

    1
    2
    g/xxx/d  #删除含有xxx的行
    1,$s/==========\n/\r---/g # 含有特殊字符的替换

编码问题

遇到时再说…

相关资料

欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/